#ifndef HASH_MAP_IMPLEMENTATION
#define HASH_MAP_IMPLEMENTATION

#include "CommonSettingsAndUtilities.h"

#include <string>
#include <cstring>

#ifdef MY_WINDOWS
	#include <hash_map>
#else
	#include <ext/hash_map>
	using namespace __gnu_cxx;
#endif
using namespace std;


struct eqstr
{
	bool operator()(const char* s1, const char* s2) const
	{
		return strcmp(s1, s2) == 0;
	}
};

template <typename T>
class HashMapImplementation
{
	// member functions
public:
	HashMapImplementation();
	~HashMapImplementation();

	bool InsertKeyValuePair(const char* key, T value);
	
	T& GetValue(const char* key);

	// data members
private:
	hash_map<const char*, int, hash<const char*>, eqstr> internalMap;
};

#endif